Лямбда Калкулус на Стримах
Кто кушал вкус свободных монад, тот знает, что все синтаксические деревья имеют свои интерпретаторы. Деревьями мы кодируем FSM выразимые тем, что мы называем "данными", а CPS-интерпретаторы мы называем "кодом". Выполнение кода каждого хендлера такой синтаксической единицы мы называем 1 тактом выполнения в интерпретаторе. В процессе интерпретации программы мы вызываем poll у текущего элемента в дереве и он вызывает poll у детей вниз по синтаксическому дереву, попутно выполняя редукции и создавая матрешки контекстов, которые и есть env.
Плюсы такой системы: интеграция интерпретатора и паралелизатора стримов с интерпретатором лямбда калкулуса в единую библиотеку комбинаторов. Наряду с векторизирующими Fold, Map, Over, Scan, Filter комбинаторами мы имеем Lambda, Call, Cond, Assign. Дальше синтаксические конструкции дерева могут расширятся — мы просто ложим файл хендлер единой функции poll соотв. комбинатора.
Посмотрел бегло интернет но такого чтобы имплементации такого интерпретатора — то нет, не найти. Може я гоню или идея ок? Простой и элегантный векторизирующий лямбда интерпретатор. В таком интерпретаторе имплементация размазана по веткам дерева, в отличие от классических интерпретаторов об одном switch.
Может кто знает пейперы какие есть?